<!DOCTYPE html>
<html lang="zh-cn">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .container {
        width: 300px;
        display: flex;
        justify-content: space-between;
      }

      .red-green-light {
        display: flex;
        flex-direction: column;
        justify-content: space-around;
        align-items: center;
        width: 70px;
        height: 240px;
        background-color: #333;
        border-radius: 5px;
      }

      .light {
        width: 60px;
        height: 60px;
        border-radius: 50%;
        background-color: #fff;
      }

      .red-green-light .light:nth-child(1).active {
        background-color: red;
      }

      .red-green-light .light:nth-child(2).active {
        background-color: green;
      }

      .red-green-light .light:nth-child(3).active {
        background-color: goldenrod;
      }
    </style>
  </head>

  <body>
    <div class="container">
      <div class="red-green-light">
        <div class="light red"></div>
        <div class="light green"></div>
        <div class="light yellow"></div>
      </div>
    </div>
  </body>

  <script>
    // 让灯亮的方法
    const openLight = (node) => node.classList.add('active')
    // 让灯灭的方法
    const offLight = (node) => node.classList.remove('active')
    // 获取元素
    const red = document.querySelector('.red')
    const green = document.querySelector('.green')
    const yellow = document.querySelector('.yellow')
    // 展示函数
    function render() {
      return new Promise((reslove, reject) => {
        openLight(red)
        setTimeout(() => {
          reslove(offLight(red))
        }, 3000)
      })
        .then((res) => {
          console.log(res)
          openLight(green)
          return new Promise((reslove, reject) => {
            setTimeout(() => {
              reslove(offLight(green))
            }, 2000)
          })
        })
        .then((res) => {
          console.log(res)
          openLight(yellow)
          return new Promise((reslove, reject) => {
            setTimeout(() => {
              reslove(offLight(yellow))
            }, 2000)
          })
        })
    }
    render()
  </script>
</html>
